1. Field of the Invention
The present invention relates to systems for modeling processes and more particularly to computer systems for modeling processes.
2. Description of the Related Art
Currently there is a strong movement toward very high level programming languages which can enhance programmer productivity by making a programming task more understandable and intuitive. The increasing use of computers by users who are not highly trained in computer programming techniques has lead to a situation in which the user's programming skills and ability to interact with a computer system often become a limiting factor in the achievement of optimal utilization of the computer system.
There are numerous subtle complexities which a user often must master before she can efficiently program a computer system. For example, typical earlier computer systems generally comprise software subsystems which include multiple programs, and such programs often utilize one or more subroutines. Software systems typically coordinate activity between multiple programs, and each program typically coordinates activity between multiple subroutines. However, techniques for coordinating multiple programs generally differ from techniques for coordinating multiple subroutines. Furthermore, since programs ordinarily can stand alone while subroutines usally cannot, techniques for linking programs to a software system generally differ from techniques for linking subroutines to a program. Complexities such as these often make it difficult for a user, who although she may be a specialist in her field is not a specialist in the computer field, to efficiently make use of powerful computer systems which are available for her use.
The task of programming a computer system to model a process often is further complicated by the fact that a sequence of mathematical formulas, mathematical steps or other procedures customarily used to conceptually model such a process often does not closely correspond to the traditional programming techniques used to program a computer system to model such a process. For example, a user of a computer system frequently develops a conceptual model for a physical system which can be partitioned into functional blocks, each of which corresponds to actual systems or subsystems. Computer systems, however, ordinarily do not actually compute in accordance with such conceptualized functional blocks. Instead, they often utilize calls to various subroutines and retrievals of data from different memory storage locations to implement a procedure which could be conceptualized by a user in terms of a functional block. Thus, a user often must substantially master different skills in order to both conceptually model a system and then to cause a computer system to model that system. Since a user often is not fully proficient in techniques for causing a computer system to implement her model, the efficiency with which the computer system can be utilized to perform such modelling often is reduced.
One particular field in which computer systems are employed to model physical systems is the field of instrumentation. An instrument typically collects information from an environment. Some of the types of information which might be collected by respective instruments, for example, include: voltage, distance, velocity, pressure, frequency of oscillation, humidity or temperature. An instrumentation system ordinarily controls its constituent instruments from which it acquires data which it analyzes, stores and presents to a user of the system. Computer control of instrumentation has become increasingly desirable in view of the increasing complexity and variety of instruments available for use.
In recent years, increasing effort has been directed toward providing more efficient means for implementing instrumentation systems. The task has been complicated by the fact that such systems include arbitrary combinations of hardware instruments and software components. The need for more efficient means of implementation has been prompted by increasing demands for automated instrumentation systems and an increasing variety of hardware and software combinations in use.
In the past, many instrumentation systems comprised individual instruments physically interconnected. Each instrument typically included a physical front panel with its own peculiar combination of indicators, knobs, or switches. A user generally had to understand and manipulate individual controls for each instrument and record readings from an array of indicators. Acquisition and analysis of data in such instrumentation systems was tedious and error prone. An incremental improvement in user interface was made with the introduction of centralized control panels. In these improved systems, individual instruments were wired to a control panel and the individual knobs, indicators or switches of each front panel were either preset or were selected to be presented on a common front panel.
Another significant advance occurred with the introduction of computers to provide more flexible means for interfacing instruments with a user. In such computerized instrumentation systems the user interacted with a software program of the computer system through a terminal rather than through a manually operated front panel. These earlier improved instrumentation systems provided significant performance efficiencies over earlier systems for linking and controlling test instruments.
Additional problems soon developed, however. Computer programs used to control such improved instrumentation systems had to be written in conventional programming language such as, for example, machine code, FORTRAN, BASIC, Pascal, or ATLAS. Traditional users of instrumentation systems, however, often were not highly trained in programming techniques and, therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumention data. Thus, development and maintenance of the software elements in these instrumentation systems often proved to be difficult.
Some reasons for the difficulties associated with earlier computerized instrumentation systems included, for example: (1) textual programming languages were non-intuitive and unfamiliar to the instrumentation system user; (2) traditional programming languages did not readily support the parallel activity of multiple individual instruments; (3) concepts embodied in a computer program often were significantly different from concepts embodied in an instrumentation system's instrument hardware; (4) computer program software modules often did not match an instrumentation system's hardware modularity making interchangeability of software and hardware difficult; and (5) techniques for designing, constructing, and modifying computer software were significantly different from corresponding techniques for developing an instrument hardware system.
A general type of programming technique involves data flow programming. Data flow programming typically involves an ordering of operations which is not specifically specified by a user but which is implied by data interdependencies. An advantage of data flow programming is that it introduces parallelism into a computer system which, of course, usually increases the speed and efficiency of the system.
Unfortunately, there has been difficulty constructing data flow computer systems because such systems often experience difficulty implementing conditional type and loop type operations. Furthermore, data flow computer systems often are relatively difficult to construct or even to comprehend due to the their relative complexity.
Thus, there exists a need for a system which can be relatively easily programmed for use in modelling a process. Furthermore, there exists a need for an instrumentation system utilizing such a system. Finally, there exists a need for such a system which employs data flow techniques. The present invention meets these needs.